home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / glimpse-2.1 / agrep / compat.c < prev    next >
C/C++ Source or Header  |  1995-05-16  |  2KB  |  106 lines

  1. /* Copyright (c) 1994 Sun Wu, Udi Manber, Burra Gopal.  All Rights Reserved. */
  2. /* test the conflicts between options */
  3. #include <stdio.h>
  4.  
  5. extern int D;
  6. extern int FILENAMEONLY, APPROX, PAT_FILE, PAT_BUFFER, MULTI_OUTPUT, COUNT, INVERSE, BESTMATCH;
  7. extern FILEOUT;
  8. extern REGEX;
  9. extern DELIMITER;
  10. extern WHOLELINE;
  11. extern LINENUM;
  12. extern I, S, DD;
  13. extern JUMP;
  14. extern char Progname[32];
  15. extern int agrep_initialfd;
  16. extern int EXITONERROR;
  17. extern int errno;
  18.  
  19. int
  20. compat()
  21. {
  22.     if(BESTMATCH)  if(COUNT || FILENAMEONLY || APPROX || PAT_FILE) {
  23.         BESTMATCH = 0;
  24.         fprintf(stderr, "%s: -B option ignored when -c, -l, -f, or -# is on\n", Progname);
  25.     }
  26.     if (COUNT && LINENUM) {
  27.         LINENUM = 0;
  28.         fprintf(stderr, "%s: -n option ignored with -c\n", Progname);
  29.     }
  30.     if(PAT_FILE || PAT_BUFFER)   {
  31.         if(APPROX && (D > 0))  {
  32.             fprintf(stderr, "%s: approximate matching is not supported with -f option\n", Progname);
  33.         }
  34.         /*
  35.                 if(INVERSE) {
  36.                     fprintf(stderr, "%s: -f and -v are not compatible\n", Progname);
  37.                     if (!EXITONERROR) {
  38.                         errno = 2;
  39.                         return -1;
  40.                     }
  41.                     else exit(2);
  42.                 }
  43.         */
  44.         if(LINENUM) {
  45.             fprintf(stderr, "%s: -f and -n are not compatible\n", Progname);
  46.             if (!EXITONERROR) {
  47.                 errno = 2;
  48.                 return -1;
  49.             }
  50.             else exit(2);
  51.         }
  52.         /*
  53.         if(DELIMITER) {
  54.             fprintf(stderr, "%s: -f and -d are not compatible\n", Progname);
  55.             if (!EXITONERROR) {
  56.                 errno = 2;
  57.                 return -1;
  58.             }
  59.             else exit(2);
  60.         }
  61.         */
  62.     }
  63.     if (MULTI_OUTPUT && LINENUM) {
  64.         fprintf(stderr, "%s: -M and -n are not compatible\n", Progname);
  65.         if (!EXITONERROR) {
  66.             errno = 2;
  67.             return -1;
  68.         }
  69.         else exit(2);
  70.     }
  71.     if(JUMP) {
  72.         if(REGEX) {
  73.             fprintf(stderr, "%s: -D#, -I#, or -S# option is ignored for regular expression pattern\n", Progname);
  74.             JUMP = 0;
  75.         }
  76.         if(I == 0 || S == 0 || DD == 0) {
  77.             fprintf(stderr, "%s: the error cost cannot be 0\n", Progname);
  78.             if (!EXITONERROR) {
  79.                 errno = 2;
  80.                 return -1;
  81.             }
  82.             else exit(2);
  83.         }
  84.     }
  85.     if(DELIMITER) {
  86.         if(WHOLELINE) {
  87.             fprintf(stderr, "%s: -d and -x are not compatible\n", Progname);
  88.             if (!EXITONERROR) {
  89.                 errno = 2;
  90.                 return -1;
  91.             }
  92.             else exit(2);
  93.         }
  94.     }
  95.     if (INVERSE && (PAT_FILE || PAT_BUFFER) && MULTI_OUTPUT) {
  96.         fprintf(stderr, "%s: -v and -M are not compatible\n", Progname);
  97.         if (!EXITONERROR) {
  98.             errno = 2;
  99.             return -1;
  100.         }
  101.         else exit(2);
  102.     }
  103.  
  104.     return 0;
  105. }
  106.